{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 前期准备"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from selenium import webdriver \n",
    "import time\n",
    "import requests\n",
    "import base64\n",
    "from PIL  import Image\n",
    "import json"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "<ipython-input-2-89ffedf7a14e>:7: DeprecationWarning: use options instead of chrome_options\n",
      "  driver = webdriver.Chrome( chrome_options = opts)\n"
     ]
    }
   ],
   "source": [
    "opts = webdriver.ChromeOptions()\n",
    "opts.add_argument('--no-sandbox')#解决DevToolsActivePort文件不存在的报错\n",
    "opts.add_argument('window-size=1920x3000') #指定浏览器分辨率\n",
    "opts.add_argument('--disable-gpu') #谷歌文档提到需要加上一这个属性来规避bug\n",
    "opts.add_argument('--hide-scrollbars') #隐藏滚动条, 应对些特殊页面\n",
    "#opts.add_argument('blink-settings=imagesEnabled=false') #不加载图片, 提升速度\n",
    "driver = webdriver.Chrome( chrome_options = opts)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 图鉴API调用  \n",
    ">- [api开发文档](http://www.ttshitu.com/docs/python.html#pageTitle)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def base64_api(uname, pwd, img, typeid):\n",
    "    with open(img, 'rb') as f:\n",
    "        base64_data = base64.b64encode(f.read())\n",
    "        b64 = base64_data.decode()\n",
    "    data = {\"username\": uname, \"password\": pwd, \"typeid\": typeid, \"image\": b64}\n",
    "    result = json.loads(requests.post(\"http://api.ttshitu.com/predict\", json=data).text)\n",
    "    if result['success']:\n",
    "        return result[\"data\"][\"result\"]\n",
    "    else:\n",
    "        return result[\"message\"]\n",
    "    return \"\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PDF下载与验证码识别 函数封装"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def download(count,end_count):\n",
    "    data = pd.read_excel(\"\")\n",
    "    title_list = data[\"title_name\"].to_list()[count:end_count]\n",
    "    pdf_url_list = data[\"pdf_url\"].to_list()[count:end_count]\n",
    "    for title,pdf_url in zip(title_list,pdf_url_list):\n",
    "        try:\n",
    "            driver.get(pdf_url)\n",
    "            time.sleep(6)\n",
    "            if driver.find_element_by_id('vImg'):\n",
    "                time.sleep(5)\n",
    "                screenImg = \"\"\n",
    "                # 浏览器页面截屏\n",
    "                driver.get_screenshot_as_file(screenImg)\n",
    "                # 定位验证码位置及大小\n",
    "                img = driver.find_element_by_id('vImg')\n",
    "                left = img.location['x']+120\n",
    "                top = img.location['y']+50\n",
    "                right = img.location['x'] + img.size['width']+140\n",
    "                bottom = img.location['y'] + img.size['height']+80\n",
    "                # 从文件读取截图，截取验证码位置再次保存\n",
    "                img = Image.open(screenImg).crop((left, top, right, bottom))\n",
    "                img.save(screenImg)         \n",
    "                img_path = \"\"\n",
    "                # 验证码识别api的调用\n",
    "                result = base64_api(uname='uname', pwd='pwd', img=img_path, typeid=typeid)\n",
    "                print(\"识别结果：\",result) # 识别出的图片结果\n",
    "                driver.find_element_by_id('vcode').send_keys(result) # 将图片结果填入\n",
    "                time.sleep(5)\n",
    "                driver.find_element_by_xpath('/html/body/div/form/dl/dd/button').click() # 点击提交进行下载\n",
    "        except:\n",
    "            print(f'{title}----下载成功')\n",
    "            continue"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 尝试调用函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "识别结果： 4ftn\n"
     ]
    }
   ],
   "source": [
    "download(0,1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 验证码填写过程  \n",
    "![](https://gitee.com/Daisy-X/web_-mining_week13_cnki/raw/master/pictures/%E9%AA%8C%E8%AF%81%E7%A0%81%E5%A1%AB%E5%86%99.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 调用函数，批量下载，防止操作频繁"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "智慧城市中枢系统的顶层设计与建设运营  网络首发----下载成功\n",
      "智能制造和大数据挖掘在农业机械设计中的应用----下载成功\n",
      "山东省智慧果业云服务平台的设计与实现----下载成功\n",
      "语义互联视角下规划类企业数据资产管理研究——以配电网规划设计企业为例----下载成功\n",
      "专题性总体城市设计编制探索——以南京为例  网络首发----下载成功\n",
      "大数据挖掘技术的光流场图像匹配方法设计----下载成功\n",
      "大数据下基于机器学习的项目智能成本管理研究——以A风景园林规划研究院规划设计类项目为例----下载成功\n",
      "基于JBPM的高校微课评价自动审批系统设计----下载成功\n",
      "基于Hadoop交通信息并行处理云系统设计----下载成功\n",
      "基于区块链的电力数据交易方案设计----下载成功\n",
      "新技术条件下的博物馆智慧服务设计策略----下载成功\n",
      "基于智能制造和大数据挖掘的农机数字化设计研究----下载成功\n",
      "数据要素的证券属性设计研究----下载成功\n",
      "基于运行数据驱动反向设计的复杂装备个性化定制  网络首发----下载成功\n",
      "基于运行数据驱动反向设计的复杂装备个性化定制----下载成功\n",
      "基于用户画像的高校图书馆个性化资源推荐服务设计----下载成功\n",
      "大数据平台下化工企业消防安全风险分析指标设计----下载成功\n",
      "信息技术与智能装备助力智能设计育种----下载成功\n",
      "基于“互联网+”的职业教育学分银行支撑平台设计研究----下载成功\n",
      "数据驱动的精准教学五维支持服务框架设计与实践研究----下载成功\n",
      "基于大数据的多群体用户画像构建系统设计----下载成功\n",
      "基于MapReduce的大数据在线聚集优化设计----下载成功\n",
      "基于大数据糖尿病患者膳食管理系统的设计----下载成功\n",
      "四旋翼飞行器的数字孪生系统设计  网络首发----下载成功\n",
      "国家自然科学基金推动下的城乡规划设计与理论研究进展----下载成功\n",
      "智媒体时代公共文化服务蓝图设计----下载成功\n",
      "科技期刊编校现状分析与编校分离机制设计----下载成功\n",
      "地震信息化共用服务平台设计与实现----下载成功\n",
      "基于智能制造和大数据云平台的农机数字化设计----下载成功\n",
      "人工智能城市设计在街区尺度的逐级交互式设计模式探索----下载成功\n",
      "数字媒体艺术在文化创意产业中的应用——评《数字媒体艺术设计概论》----下载成功\n",
      "基于大数据技术的个性化在线教育系统设计----下载成功\n",
      "基于知识建构的本科数据素养教育学习环境设计----下载成功\n",
      "三维激光扫描技术下杂散光大数据预处理系统设计----下载成功\n",
      "基于物联网的猪饲料质量追溯系统设计及应用----下载成功\n",
      "基于物联网平台的智慧园区设计与应用----下载成功\n",
      "大数据时代档案信息资源共享平台数据存储系统的设计与实现----下载成功\n",
      "三值光学计算机中SJ-MSD加法器的设计与实现----下载成功\n",
      "基于“边缘智能计算”的智慧校园设计----下载成功\n",
      "铁路机务大数据应用系统设计研究----下载成功\n",
      "多源异构文化大数据融合平台设计----下载成功\n",
      "基于大数据的高校毕业生就业竞争力评价系统设计----下载成功\n",
      "人工智能背景下中国婚礼服设计服务模式探究----下载成功\n",
      "基于Hadoop的大数据工程实践多层次教学设计----下载成功\n",
      "基于大数据的元素协变图自动绘制软件的设计与实现----下载成功\n",
      "基于数字孪生讲台的在线沉浸式教学体系分析与流程设计----下载成功\n",
      "大数据时代“通过设计保护数据”的元规制----下载成功\n",
      "基于大数据技术的智慧城市公共资源配置系统设计----下载成功\n",
      "基于MapReduce的CRH2型动车组网络控制系统PHM故障筛选的设计与实现----下载成功\n",
      "基于多级身份验证和轻量级加密的电力物联网数据安全系统设计----下载成功\n",
      "重大疫情防控中的个人信息保护研究——基于隐私保护设计理论----下载成功\n",
      "大数据驱动的环境景观设计方案评估研究----下载成功\n",
      "大数据背景下旅游美食文化的开发——评《饮食文化旅游开发与设计》----下载成功\n",
      "基于大数据的电子式互感器设备状态在线监测设计----下载成功\n",
      "城市轨道交通智慧车站技术方案研究与设计----下载成功\n",
      "基于用户动态需求的产品迭代创新设计方法研究----下载成功\n",
      "基于大数据和软件仿真的农机数字化设计云平台构建----下载成功\n",
      "Spark平台下日志清洗系统设计----下载成功\n",
      "基于大数据的智能风险防控平台设计与实现----下载成功\n",
      "基于Hadoop的高校图书馆阅读书目智慧推荐系统设计----下载成功\n",
      "基于遗传算法的农业数据采集系统的设计——评《农产品产地土壤环境质量监测数据采集与应用》----下载成功\n",
      "利用计算机交互技术的网页界面文本视觉优化设计----下载成功\n",
      "高校图书馆数据素养教育体系设计研究——以北京大学图书馆为例----下载成功\n",
      "校企协同的大数据技术能力评测体系设计与实践----下载成功\n",
      "多源异构文化大数据融合平台设计  网络首发----下载成功\n",
      "个人数据保护中“通过设计保护隐私”的基本原理与制度建构----下载成功\n",
      "基于“艺术指数”的艺术大数据移动应用设计研究----下载成功\n",
      "《人工智能大数据及应用平台设计》/信息设计----下载成功\n",
      "高校教育大数据应用支撑体系的设计与实践----下载成功\n",
      "高校四元智慧应用模型的设计与有效性验证----下载成功\n",
      "基于集成学习的全云化健康大数据整合系统设计----下载成功\n",
      "基于大数据的物资供应链配送智能调度系统设计----下载成功\n",
      "医院绩效管理系统设计实践与思考----下载成功\n",
      "范式突围:服务设计视域下移动阅读APP体验设计----下载成功\n",
      "京东扶贫3.0时代下设计参与电商路径探索  网络首发----下载成功\n",
      "大数据背景下的家电产品工业设计研究----下载成功\n",
      "大数据时代的高校设计课程教学效果预测----下载成功\n",
      "基于机器学习的匿名大数据访问控制系统设计----下载成功\n",
      "数据驱动的动态学习干预系统设计----下载成功\n",
      "高校大数据平台的规划设计与实现----下载成功\n",
      "基于数据中台的校园数据体系设计与建设----下载成功\n",
      "城市设计中城市图层系统构建技术方法与路径初探----下载成功\n",
      "基于大数据的船舶动力装置全寿期综合保障系统设计----下载成功\n",
      "基于大数据技术的生产调度规则提取与挖掘系统设计----下载成功\n",
      "大数据时代档案信息资源共享平台数据采集系统设计与应用----下载成功\n",
      "中铁隧道勘察设计研究院有限公司----下载成功\n",
      "基于区块链的个人信用信息共享平台设计及应用场景研究----下载成功\n",
      "基于大数据分析的人才培养模式设计----下载成功\n",
      "基于大数据驱动的智慧图书馆推送系统设计----下载成功\n",
      "基于大数据技术的电信网络诈骗案件分析实验设计----下载成功\n",
      "基于数据安全技术的建筑三维协同设计管理平台研究----下载成功\n",
      "长江经济带水质目标管理平台总体设计----下载成功\n",
      "大数据时代室内设计中人性化空间的创造探索——评《住宅空间布局与动线优化》----下载成功\n",
      "基于降水大数据的不同区域洪水灾害特征统计系统设计----下载成功\n",
      "基于大数据的农业管理平台设计----下载成功\n",
      "数字乡村建设视角下乡村数字经济指标体系设计研究----下载成功\n",
      "大数据背景下的油画破损区域修复算法设计----下载成功\n",
      "大数据分析技术的图书馆信息检索系统设计与研究----下载成功\n",
      "公安网络信息体系顶层设计----下载成功\n",
      "个人信息应用的保护设计与实证进路——基于《民法典》同意原则的博弈分析----下载成功\n"
     ]
    }
   ],
   "source": [
    "download(0,100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "识别结果： 4s8j\n",
      "识别结果： 4s8j\n",
      "基于迁移学习的并行化大数据流传输系统设计----下载成功\n",
      "风电场智能化设计云平台关键技术探讨----下载成功\n",
      "勘探开发梦想云平台架构设计与实现----下载成功\n",
      "江山八法:基于数字化信息图谱的山水城市设计探索——以杭州钱塘江两岸地区为例----下载成功\n",
      "人工智能背景下用户参与式公共文化服务APP设计策略----下载成功\n",
      "铀矿地质云平台应用示范系统设计与实现----下载成功\n",
      "教育大数据挖掘的学习者模型设计与计算研究----下载成功\n",
      "基于大数据的无线通信频谱资源分批协作分配系统设计----下载成功\n",
      "大数据分析技术的数字图书馆信息检索模型设计----下载成功\n",
      "一种基于制造大数据的产品工艺自适应设计方法----下载成功\n",
      "基于模糊K-Means聚类的光纤大数据分类平台设计----下载成功\n",
      "基于GIS土壤养分空间变异性的养分分析仪设计----下载成功\n",
      "基于DSP与大数据信息的农田土壤采样器的改进设计----下载成功\n",
      "基于人工智能的高职院校“双师型”教师培训设计----下载成功\n",
      "大数据量低延时航电中继系统设计与实现----下载成功\n",
      "林果大数据分析应用平台设计研究——以新疆生产建设兵团为例----下载成功\n",
      "从风险预测到风险溯源：大数据赋能城市安全管理的行动设计研究----下载成功\n",
      "基于大数据数学统计思维的食品安全实验制定研究——书评《食品试验设计与统计分析》----下载成功\n",
      "NSTL大数据管理与计算平台的设计与应用实践----下载成功\n",
      "舰船通信网络大数据的存储机制设计----下载成功\n",
      "大数据时代会计信息化对企业财务管理的影响——评《化工企业规范化管理制度设计》----下载成功\n",
      "大数据与智能化环境下的可持续设计趋势研究----下载成功\n",
      "面向E级计算超融合软件框架的设计与实现----下载成功\n",
      "智造技术驱动的设计与广告的计算创新----下载成功\n",
      "科技助力国家田径队智能化训练场馆建设需求和功能设计研究----下载成功\n",
      "基于大数据的高密度信息安全存储系统设计----下载成功\n",
      "基于数字标签的电子档案序列大数据并行分类系统设计----下载成功\n",
      "基于大数据分析技术的旅游智慧平台设计----下载成功\n",
      "中小河流健康诊断大数据平台的设计与应用----下载成功\n",
      "公路智能交通云平台设计与实现----下载成功\n",
      "大数据背景下的个性化智能教学系统设计----下载成功\n",
      "基于大数据分析的混合属性图像冗余特征聚类系统设计----下载成功\n",
      "数据科学导论的课程设计及教学改革----下载成功\n",
      "基于大数据分析的镁合金压铸模快速设计系统开发----下载成功\n",
      "智慧EH供水工程总体设计研究----下载成功\n",
      "江西省农村基层洪涝灾害监测预警平台设计及应用----下载成功\n",
      "面向实验教学和学生创新活动的复合云桌面设计与构建----下载成功\n",
      "大数据算法库教学实验平台设计与实现----下载成功\n",
      "基于模型的教育大数据应用框架设计----下载成功\n",
      "一种通用混合计算中间件的设计与实现----下载成功\n",
      "网络谣言与“认知安妥性”——一条非大数据化的智能鉴谣系统设计思路----下载成功\n",
      "基于大数据图像处理的产品造型智能设计探索  网络首发----下载成功\n",
      "智慧矿山顶层架构设计及其关键技术----下载成功\n",
      "人工智能+融媒体体验:基于广电融媒体设计模型的解读----下载成功\n",
      "工业4.0背景下产品设计成本管理研究----下载成功\n",
      "疫情地图实时报告的数据可视化设计----下载成功\n",
      "基于激光扫描的车联网监控系统设计----下载成功\n",
      "汕头海湾隧道超大直径泥水盾构针对性设计及不良地质施工技术----下载成功\n",
      "基于分布式集群的高可用日志分析系统的设计----下载成功\n",
      "公共文化服务大数据集成架构设计研究----下载成功\n",
      "农机数字化设计平台研究——基于大数据的多媒体网络----下载成功\n",
      "大数据下植物景观空间层次化规划系统设计----下载成功\n",
      "看见“看不见”——信息可视化设计实践趋势与例析----下载成功\n",
      "一种景观指数的GPU并行算法设计----下载成功\n",
      "省级配电自动化主站的停电信息资源池功能设计----下载成功\n",
      "城市轨道交通线网指挥中心建设方案的设计要点----下载成功\n",
      "中小学教师数据素养培训课程设计与实践研究----下载成功\n",
      "拖拉机作业载荷数据平台设计与旋耕作业质量预测----下载成功\n",
      "基于教育大数据的高中物理学历案的设计——以“牛顿运动定律”单元复习课为例----下载成功\n",
      "基于大数据的区域水资源可持续承载力预测系统设计----下载成功\n",
      "基于大数据分析技术的智慧教育平台设计----下载成功\n",
      "区域教育大数据分析架构与展示设计研究——以江苏省A市为例----下载成功\n",
      "智能电能表故障预警系统的设计与开发----下载成功\n",
      "智能化煤矿顶层设计研究与实践  附视频----下载成功\n",
      "新零售背景下家电品牌社会化互动设计----下载成功\n",
      "现代招贴广告设计中的图像表达探析----下载成功\n",
      "《新型冠状病毒肺炎疫情数据可视化设计综述》序言----下载成功\n",
      "高铁联调联试数据智能分析及管理总体设计研究----下载成功\n",
      "网络安全态势感知实训平台设计与实践----下载成功\n",
      "基于大数据统计的土壤养分含量预测模型设计----下载成功\n",
      "“互联网+政务服务”环境下档案管理系统与政务服务平台协同设计----下载成功\n",
      "大数据分析下的导向型企业考核激励机制设计----下载成功\n",
      "异构多核人工智能SoC芯片的低功耗设计----下载成功\n",
      "大数据思维语境下的信息维度与信息设计研究----下载成功\n",
      "大数据时代的整合调查设计——以校园满意度调查为例----下载成功\n",
      "基于Python的地震时大数据拥堵实时传输系统设计----下载成功\n",
      "基于大数据的智能配电网三相不平衡负荷预测系统设计----下载成功\n",
      "基于用户行为分析和LDA模型的数字媒体推荐系统的设计与实现----下载成功\n",
      "大数据时代下城市规划设计理论与实践教学研究——评《城市规划大数据理论与方法》----下载成功\n",
      "大数据背景下船舶现代物流配送系统的设计与实现----下载成功\n",
      "体育信息网络传播管理系统的设计与应用对全民体育意识和行为的影响研究——评《竞技体育信息集成服务》----下载成功\n",
      "能源大数据应用中心功能体系及应用场景设计----下载成功\n",
      "面向多源数据的军事信息系统设计----下载成功\n",
      "从数字设计到数字管控：第四代城市设计范型的威海探索----下载成功\n",
      "基于国情调查大数据的矿产资源保障程度动态分析系统设计与实现----下载成功\n",
      "基于大数据的智慧教室驾驶舱的设计与实践——以重庆广播电视大学为例----下载成功\n",
      "实时大数据挖掘系统的设计与实现----下载成功\n",
      "时空大数据资源集成框架设计与应用----下载成功\n",
      "农村信息化发展顶层设计：政策回顾与前瞻----下载成功\n",
      "超大型城市社会精细化治理现状分析与顶层设计——以上海市为例----下载成功\n",
      "计算机辅助人体工程学在定制家具设计中的应用研究----下载成功\n",
      "金融科技创新背景下我国金融产品干预制度设计研究——基于金融消费权益保护视角----下载成功\n",
      "基于多维分层采样的时间维度型大数据流整合系统设计----下载成功\n",
      "基于大数据的智能商务分析平台开发和设计----下载成功\n",
      "火电厂智能化远程管理云平台系统设计----下载成功\n",
      "铁路桥梁混凝土工程造价大数据计算模型优化设计----下载成功\n",
      "生态环境立体遥感监测大数据顶层设计研究----下载成功\n",
      "基于STP的车站调车分析系统设计研究----下载成功\n"
     ]
    }
   ],
   "source": [
    "download(100,200)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ……\n",
    "## ……\n",
    "## 运行如上函数，批量下载PDF文件  \n",
    "下载结果如下：  \n",
    "![](https://gitee.com/Daisy-X/web_-mining_week13_cnki/raw/master/pictures/PDF%E4%B8%8B%E8%BD%BD%E6%95%B0%E9%87%8F%E6%88%AA%E5%9B%BE.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "165px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
